gesturesingle: Ensure the current button stays set until after the touch/button release
authorCarlos Garnacho <carlosg@gnome.org>
Wed, 11 Jun 2014 15:34:23 +0000 (17:34 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Wed, 11 Jun 2014 15:36:03 +0000 (17:36 +0200)
This makes gtk_gesture_get_current_button() work properly on GtkGesture::end, and signals
spawn from there on subclasses.

gtk/gtkgesturesingle.c

index 08e5b42fd5d7ec2a3e170a73d73acac7af4a4db5..ac91851808ab83ab1ac1762c4d90e245b67346bb 100644 (file)
@@ -131,6 +131,7 @@ gtk_gesture_single_handle_event (GtkEventController *controller,
   GdkDevice *source_device;
   GdkInputSource source;
   guint button = 0, i;
+  gboolean retval;
 
   source_device = gdk_event_get_source_device (event);
 
@@ -204,11 +205,14 @@ gtk_gesture_single_handle_event (GtkEventController *controller,
 
       priv->current_button = button;
     }
-  else if (sequence == priv->current_sequence &&
-           (event->type == GDK_BUTTON_RELEASE || event->type == GDK_TOUCH_END))
+
+  retval = GTK_EVENT_CONTROLLER_CLASS (gtk_gesture_single_parent_class)->handle_event (controller, event);
+
+  if (sequence == priv->current_sequence &&
+      (event->type == GDK_BUTTON_RELEASE || event->type == GDK_TOUCH_END))
     priv->current_button = 0;
 
-  return GTK_EVENT_CONTROLLER_CLASS (gtk_gesture_single_parent_class)->handle_event (controller, event);
+  return retval;
 }
 
 static void